package com.jic.product.controller.store;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.jic.common.base.vo.RestResult;
import com.jic.product.constant.consist.ResponseCode;
import com.jic.product.model.entity.MStoreVirtualShopRel;
import com.jic.product.model.vo.request.MStoreVirtualShopRelRequest;
import com.jic.product.model.vo.response.MStoreVirtualShopRelResponse;
import com.jic.product.service.MStoreVirtualShopRelService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;
/**
 * @Author: 建投数据科技(山东)有限公司 
 * @date: 2020-04-24 20:27:35
 */
 @RestController
 @Slf4j
 @RequestMapping("/mStoreVirtualShopRel")
 @Api(tags = " []控制类-PC")
public class MStoreVirtualShopRelController {
	@Autowired
	private MStoreVirtualShopRelService service;
	
/**
 * 新增记录
 * @param request 新增[]请求参数
 * @return MStoreVirtualShopRelResponse 新增[]响应参数
 * author 建投数据科技(山东)有限公司
 * @date 2020-3-11 20:54:04
 */
@ApiOperation(value = "新增[]记录")
@PostMapping("/save")
@ResponseBody
public RestResult<Long> save(@RequestBody MStoreVirtualShopRelRequest request) throws Throwable {
 		MStoreVirtualShopRel mStoreVirtualShopRel = new MStoreVirtualShopRel();
		BeanUtils.copyProperties(request, mStoreVirtualShopRel);
	long flag = service.save(mStoreVirtualShopRel);
 return RestResult.success(flag);
}
/**
 * 新增或修改记录
 * @param request 新增或修改[]请求参数
 * @return MStoreVirtualShopRelResponse 新增或修改[]响应参数
 * author 建投数据科技(山东)有限公司
 * @date 2020-3-11 20:54:04
 */
@ApiOperation(value = "保存或更新[]")
@PostMapping("/saveOrUpdate")
 @ResponseBody
public RestResult<Long> saveOrUpdate(@Validated @RequestBody MStoreVirtualShopRelRequest request) throws Throwable {
 		MStoreVirtualShopRel mStoreVirtualShopRel = new MStoreVirtualShopRel();
		BeanUtils.copyProperties(request, mStoreVirtualShopRel);
	long flag =   service.saveOrUpdate(mStoreVirtualShopRel);
 return RestResult.success(flag);
}
/**
 * 删除记录
 * @param request 删除[]请求参数
 * @return MStoreVirtualShopRelResponse 删除[]响应参数
 * author 建投数据科技(山东)有限公司
 * @date 2020-3-11 20:54:04
 */
@ApiOperation(value = "删除[]记录")
@PostMapping("/delete")
@ResponseBody
public RestResult<Long> delete(@RequestBody MStoreVirtualShopRelRequest request) throws Throwable {
 		MStoreVirtualShopRel mStoreVirtualShopRel = new MStoreVirtualShopRel();
		BeanUtils.copyProperties(request, mStoreVirtualShopRel);
	long flag = service.deleteByPrimaryKeyLogically(mStoreVirtualShopRel);
 return RestResult.success(flag);
}
/**
 * 修改记录
 * @param request 修改[]请求参数
 * @return MStoreVirtualShopRelResponse 修改[]响应参数
 * author 建投数据科技(山东)有限公司
 * @date 2020-3-11 20:54:04
 */
@ApiOperation(value = "修改[]记录")
@PostMapping("/update")
@ResponseBody
public RestResult<Long> update(@RequestBody MStoreVirtualShopRelRequest request) throws Throwable {
 		MStoreVirtualShopRel mStoreVirtualShopRel = new MStoreVirtualShopRel();
		BeanUtils.copyProperties(request, mStoreVirtualShopRel);
	long flag = service.updateByPrimaryKeySelective(mStoreVirtualShopRel);
 return RestResult.success(flag);
}
/**
 * 单表查询详情信息
 * @param request 查询[]详情请求参数
 * @return MStoreVirtualShopRelResponse 查询[]详情响应参数
 * author 建投数据科技(山东)有限公司 
 * @date 2020-3-11 20:54:04
 */
 @PostMapping("/getByPrimaryKey")
 @ApiOperation(value = "查询[]详情")
 @ResponseBody
public RestResult<MStoreVirtualShopRelResponse> getByPrimaryKey(@Validated  @RequestBody MStoreVirtualShopRelRequest request) {
	log.info("查询详情请求参数入参，{}", JSONObject.toJSONString(request));
	if (request!=null && request.getId()!=null) {
	 
		MStoreVirtualShopRel mStoreVirtualShopRel = new MStoreVirtualShopRel();
		BeanUtils.copyProperties(request, mStoreVirtualShopRel);
		MStoreVirtualShopRel result = service.getByPrimaryKey(mStoreVirtualShopRel);
		log.info("查询详情请求参数出参，{}", JSONObject.toJSONString(result));
		if (result == null) {
			return RestResult.error(ResponseCode.EXCEPTION, "记录不存在");
		}
		MStoreVirtualShopRelResponse bo = new MStoreVirtualShopRelResponse();
		BeanUtils.copyProperties(result, bo);
		return RestResult.success(bo);
	}
	log.info("查询详情请求结束");
	return RestResult.success(null);
}
	 /**
		 * 分页查询
		*
		* @param request 分页查询请求参数
		* @return 分页列表
		  * @throws Throwable 业务异常和系统异常
		 */
	@PostMapping("/ listPage")
	@ApiOperation(value = " 分页查询列表 ")
	@ResponseBody
	public RestResult<PageInfo<MStoreVirtualShopRel>> listPage (@RequestBody MStoreVirtualShopRelRequest request) throws Throwable {
	 MStoreVirtualShopRel param = new MStoreVirtualShopRel();
	 BeanUtils.copyProperties(request, param);
		return RestResult.success(service.listPageBySelective(param, request.getPageNum(), request.getPageSize()));
	}

	/**
		 * M_STORE_VIRTUAL_SHOP_REL 查询列表（不分页）
		 * @param  request 前端请求参数
	 */
	 @PostMapping("/listAll")
	 @ApiOperation(value = "不分页查询 [] ")
	 @ResponseBody
	 public RestResult<List<MStoreVirtualShopRelResponse>>  listMStoreVirtualShopRelAllRecord(@RequestBody MStoreVirtualShopRelRequest request) throws Throwable {
			MStoreVirtualShopRel mStoreVirtualShopRel = new MStoreVirtualShopRel();
			BeanUtils.copyProperties(request, mStoreVirtualShopRel);
			List<MStoreVirtualShopRel> list = service.listAllRecord(mStoreVirtualShopRel);
				List<MStoreVirtualShopRelResponse> responseList = list.stream().map(temp -> {
				MStoreVirtualShopRelResponse bo = new MStoreVirtualShopRelResponse();
				BeanUtils.copyProperties(temp, bo);
				return bo;
				}).filter(item -> item != null).collect(Collectors.toList());
			return RestResult.success(responseList);
	}

}

